package net.ibizsys.modelingadv.config.service;

import java.util.List;
import org.springframework.data.domain.Page;

import net.ibizsys.modelingadv.config.dto.pspf.PSPFDTO;
import net.ibizsys.modelingadv.config.dto.pspf.PSPFFilterDTO;

/**
 * 实体[PSPF]服务对象接口
 * 
 * 可通过实体运行时对象[PSPFDERuntime]进行功能扩展
 */
public interface IPSPFService extends net.ibizsys.central.dataentity.service.IDEService<PSPFDTO, PSPFFilterDTO>{

    /**
     * 行为: Create
     */
    String ACTION_CREATE = "Create";
    /**
     * 行为: Update
     */
    String ACTION_UPDATE = "Update";
    /**
     * 行为: Remove
     */
    String ACTION_REMOVE = "Remove";
    /**
     * 行为: Get
     */
    String ACTION_GET = "Get";
    /**
     * 行为: GetDraft
     */
    String ACTION_GETDRAFT = "GetDraft";
    /**
     * 行为: CheckKey
     */
    String ACTION_CHECKKEY = "CheckKey";
    /**
     * 行为: Save
     */
    String ACTION_SAVE = "Save";
    /**
     * 查询: 当前应用类型
     */
    String DATAQUERY_CURAPPTYPE = "CurAppType";
    /**
     * 查询: 数据查询
     */
    String DATAQUERY_DEFAULT = "DEFAULT";
    /**
     * 查询: 启用
     */
    String DATAQUERY_VALID = "Valid";
    /**
     * 查询: 默认（全部数据）
     */
    String DATAQUERY_VIEW = "VIEW";
    /**
     * 集合: 当前应用类型
     */
    String DATASET_CURAPPTYPE = "CurAppType";
    /**
     * 集合: 数据集
     */
    String DATASET_DEFAULT = "DEFAULT";
    /**
     * 集合: 启用
     */
    String DATASET_VALID = "Valid";

    /**
     * 行为: Create
     *
     */
    void create(PSPFDTO dto) throws Throwable;
    /**
     * 行为: Update
     *
     */
    void update(PSPFDTO dto) throws Throwable;
    /**
     * 行为: Remove
     *
     */
    void remove(List<String> keys) throws Throwable;
    /**
     * 行为: Get
     *
     */
    PSPFDTO get(String key) throws Throwable;
    /**
     * 行为: GetDraft
     *
     */
    PSPFDTO getDraft(PSPFDTO dto) throws Throwable;
    /**
     * 行为: CheckKey
     *
     */
    Integer checkKey(PSPFDTO dto) throws Throwable;
    /**
     * 行为: Save
     *
     */
    void save(PSPFDTO dto) throws Throwable;

    /**
     * 集合: 当前应用类型
     *
     */
    Page<PSPFDTO> fetchCurAppType(PSPFFilterDTO dto) throws Throwable; 
    /**
     * 集合: 数据集
     *
     */
    Page<PSPFDTO> fetchDefault(PSPFFilterDTO dto) throws Throwable; 
    /**
     * 集合: 启用
     *
     */
    Page<PSPFDTO> fetchValid(PSPFFilterDTO dto) throws Throwable; 
}
